#pragma once

#include <d3d12.h>
#include <dxgi1_6.h>
#include <dxgidebug.h>


#include "Core/Render/RenderBackend.h"


namespace SL
{

class RenderbackendDX12 : public RenderBackend
{
public:

    RenderbackendDX12() { backendType = BackEndType::DirectX12; }

    virtual bool createInstance() override;
    virtual RenderDevice createDefaultRenderDevice() override;

    // todo
    // virtual std::vector<Adapter> enumerateAdapters() = 0;
    // virtual RenderDevice createRenderDevice(Adapter) = 0;
    virtual bool destroyRenderDevice(RenderDevice device) override;

    virtual bool enableValidationLayer(RenderDevice device) override;

private:
    ID3D12Device* device = nullptr;
};

}; // namespace SL